Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Now that we can reliably install Matlab and Octave on all four key platforms, we can build the MEX files using CI.
This reworked CI process works as follows:
First, it builds MEX files for each of four platforms (linux, macos intel, macos arm, windows) for MATLAB and Octave. It uses an older OS version, and the oldest MATLAB version possible, to maximize the chance of forward compatibility. It's not obvious how to select an older version of Octave, unfortunately.
Second, it builds ZIP and TGZ bundles containing the source code plus all of the compiled MEX files.
It then runs a functional test of those bundles on the latest versions of each OS, and MATLAB. This helps ensure that forward compatibility has been preserved, and that the bundle is complete.
@siko1056 I have implemented an equivalent CI strategy for SDPT3. Obviously, it's generally not good practice to have binaries in a source repo. But until now, we didn't really have an alternative, because we could not reliably build the MEX files in CI. This new approach allows us to do that.
Note that we lose 32-bin Linux and Windows with this, but at this point, that seems reasonable. But what we could do is restore just those platforms to the repo and indicate they are use at your own risk. I have no idea if anyone would even be trying to use them now!